介紹了幾天陣列後,今天要來認識物件囉!
物件是一種key-value pair的資料結構,什麼是key-value pair呢?key-value pair稱做物件的屬性,屬性的值(value)可以是任何型態的資料,而屬性的名稱(key)則會是一個字串型態。直接舉個例子來看看吧!
const identity = {
name: 'Mike',
birthday: '1992, 10, 10',
age: 30,
job: ['front-end engineer', 'novelist'],
bmi: {
height: 170,
weight: 68
}
}
從舉例中主要可以了解到:
,
分隔,而項目裡面可以從:
切割出來看,冒號左手邊的是該項的key
,而右手邊的是該項的value
(如name:'mike'
,name是key
,mike是value
)。此外,假如我們擁有眾多變數要進行宣告時,物件的寫法可以幫助我們有效管理眾多變數名稱,並且讓整體看起來更為簡潔清晰。
當想存取物件的值時,有兩種方式可以選用:
// 點記法
identity.name // 'Mike'
// 括號記法
identity['name'] // 'Mike'
上面兩種方式都可以得到物件中的值,而若想為物件寫入新的屬性也可以直接運用賦值:
// 點記法
identity.single = true
// 括號記法
identity['single'] = true
假如我們想要取出特定規範的資料,像是取出所有的key、取出所有的value或取出所有的pair,其各自有對應的方法可以進行操作:
console.log(Object.keys(identity)) // 輸出所有identity裡面的key
console.log(Object.values(identity)) // 輸出所有identity裡面的value
console.log(Object.entries(identity)) // 輸出所有key-value pair
Object.keys
和Object.values
會回傳陣列,而Object.entries
則會回傳雙層陣列(內層陣列第一項是key
,第二項是value
)。
最後,如果我們想要列舉出物件裡面所有的內容時,可以使用物件專用的迴圈for-in
:
for (let key in identity) {
console.log(identity[key]) // 將會依序輸出identity內每個key的值
}
需要特別注意的地方是舉例中for-in
內看到的key是一個變數,並不是key-value pair的key
,如果怕搞混可以使用其他名稱,另外,當使用變數來物件中的值時,就一定要使用括號記法,如果使用點記法程式會跑出找不到值的錯誤哦。